#ifndef MUSIC_JSON_H
#define MUSIC_JSON_H

#include <QObject>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QList>
#include <QString>
#include <QRegularExpression>
#include <QDebug>

#include <QWidget>
#include <QByteArray>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QUrl>
#include <QUrlQuery>

class music_json : public QObject
{
    Q_OBJECT
public:
    explicit music_json(QObject *parent = nullptr);

    // 解析歌词JSON
    bool parseLyricJson(const QByteArray &jsonData);
    bool parseLyricJson(const QString &jsonString);

    // 获取解析结果
    const QList<int>& getPositions() const { return m_positions; }
    const QStringList& getLyrics() const { return m_lyrics; }

    // 检查是否有歌词
    bool hasLyrics() const { return !m_positions.isEmpty(); }

    // 清空数据
    void clear();

    // 网络访问对象
    QNetworkAccessManager * mNetAccessManager;
private slots:
    void Network_finished(QNetworkReply *reply);
public slots:
        void on_pushButton_clicked(const QString &url);
private:
    QList<int> m_positions;    // 存储时间点（毫秒）
    QStringList m_lyrics;      // 存储歌词
    void handle_data(const QByteArray &bytearr);
signals:
    void emit_data( QList<int> m_positions,QStringList m_lyrics);
private:
    // 将时间字符串转换为毫秒
    int timeStringToMilliseconds(const QString &minutesStr, const QString &secondsStr, const QString &millisecondsStr);

    // 解析单行歌词
    bool parseLyricLine(const QString &line);
private:
    bool parseLyricText(const QString &lyricText);
};

#endif // MUSIC_JSON_H
